#ifndef __TEXTURE_MGR_H__
#define __TEXTURE_MGR_H__

#include <iostream>
#include <vector>

#include "types.h"

#define MAX_TEXTURE_ARRAY_SIZE	126

// texture class size should as low as possible becaused it will be refer from other classes
// so as much as possible use pointer, no array
class Texture
{

public:
	uint	textureId;
	char 	*textureName;
	Texture(char *name);

	~Texture();

	//... rest to follow
};

class TextureMgr
{
protected:
	char *textureResourceDirectory;
	std::vector<Texture *> textureArray;

	virtual Texture *LoadTexture(char *textureName) = 0;
public:
	TextureMgr();
	virtual ~TextureMgr();

	virtual void SetRextureResourceDirectory(char *dir);
	virtual Texture *GetTexture(char *textureName);

	virtual void BindTexture(Texture *texture) = 0;
	virtual void BindTexture(char *textureName) = 0;

};

#endif /* __TEXTURE_MGR_H__ */
